home *** CD-ROM | disk | FTP | other *** search
/ Day Cry / Day Cry CD.bin / oh_towns / ein / sources / einlib.lzh / LIBSRC.LZH / EIN_CLP2.C < prev    next >
C/C++ Source or Header  |  1994-07-18  |  6KB  |  222 lines

  1. /*<Header>==============================================================
  2. *
  3. *    CLIP MANAGER / "EIN_CLP2.C"
  4. *
  5. *        [ EIN(tm) project : âEâBâôâhâDâNâèâbâvæÇì∞òΓÅòè╓ÉöîQ ]
  6. *
  7. *    COPYRIGHT  Nam & OZZY  1994, All rights reserved.
  8. *
  9. *-----------------------------------------------------------------------
  10. *    V1.0L01â┐    94.07.08/Nam    âvâìâgâ^âCâv(OZZYé│é±é╠è╓Éöé≡ùÿùp)
  11. *</Header>==============================================================*/
  12. #include    <stdio.h>
  13. #include    <stdlib.h>
  14. #include    <string.h>
  15. #include    <snd.h>
  16. #include    <winb.h>
  17. #include    <te.h>
  18. #include    <fntb.h>
  19. #include    <gui.h>
  20. #include    <egb.h>
  21. #include    <msdos.cf>
  22. #include    <loader.h>
  23. #include    <math.h>
  24. #include    <io.h>
  25. #include    <guidbg.h>
  26.  
  27. #define    EIN_CLIP
  28. #include    "..\eintm.h"
  29.  
  30. #ifndef NOERR
  31. #define    NOERR    (0)
  32. #endif
  33. #ifndef ERROR
  34. #define    ERROR    (1)
  35. #endif
  36.  
  37. /* âNâèâbâvâfü[â^ì\æóæ╠ */
  38. typedef struct {
  39.     WINCLIP        *clip;
  40.     WINCLIP        *visible;
  41.     POINT        svPos;
  42. }    EIN_CLIPWORK;                        /* âNâèâbâvâfü[â^ì\æóæ╠ */
  43.  
  44. /*<Func>================================================================
  45. *    int        EIN_clipFrame( int objId, FRAME *pfr, POINT *ppt, char *work )
  46. *
  47. *    üyèT  ùvüz    ù^éªéτéΩé╜âtâîü[âÇé╠âNâèâbâvé≡É╢ɼé╖éΘüB
  48. *
  49. *    üyï@  ö\üz    ì└òWé≡î┤ô_é╔û▀é╡üAù^éªéτéΩé╜âtâîü[âÇé╠âNâèâbâvé≡üA
  50. *                î╗ì▌é╠âNâèâbâvé╞ AND é≡é╞éΘéµéñé╔É╢ɼé╖éΘüB
  51. *
  52. *    üyôⁿ  ù═üz
  53. *                objId        :    âNâèâbâvî│é╠âIâuâWâFâNâgID
  54. *                *pfr        :    ìíë±âNâèâbâvé╖éΘâtâîü[âÇé╠â|âCâôâ^(ÉΓæ╬ì└òW)
  55. *                                NULL objIdé╠âTâCâYé╔É▌ÆΦ
  56. *                *ppt        :    É▌ÆΦé╖éΘî┤ô_é╠â|âCâôâ^(ÉΓæ╬ì└òW)
  57. *                                NULL é┼ ( 0, 0 )é╔É▌ÆΦ
  58. *                *work        :    âNâèâbâvæ▐ö≡ùpâÅü[âN
  59. *
  60. *    üyÅo  ù═üz    é╚é╡
  61. *
  62. *    üyè╓ÉöÆlüz    == NOERR    É│ÅφÅIù╣
  63. *
  64. *    üyÆì  ê╙üz    
  65. *
  66. *    üyÄgùpùßüz
  67. *                char        clp[EINCLIPSIZE];
  68. *
  69. *                MMI_SendMessage( ID_BASE, MM_ATTACH, 1, MMI_GetBaseObj() ) ;
  70. *                EIN_clipFrame( ID_BASE, NULL, NULL, clp );
  71. *                MMI_SendMessage( ID_BASE, MM_SHOW, 0 ) ;
  72. *                MMI_SendMessage( ID_BASE, MM_WAKE, 0 ) ;
  73. *                EIN_endClipFrame( clp );
  74. *
  75. *-----------------------------------------------------------------------
  76. *    V11L10    1994.07.08/Nam    (OZZYé│é±é╠è╓ÉöéµéΦ)
  77. *</Func>==============================================================*/
  78. int        EIN_clipFrame( int objId, FRAME *pfr, POINT *ppt, EIN_CLIPWORK *p )
  79. {
  80.     WINCLIP    *pwclp ;
  81.     WINCTRL    *pctrl ;
  82.     POINT    pos ;
  83.     FRAME    fr ;
  84.  
  85.     /* é¿û±æ⌐é╠ErrorTrap */
  86.     if ( p == NULL ){
  87.         return ERROR;
  88.     }
  89.     /*    ì└òWîné╠êΩÄ₧ò╧ìX    */
  90.     if( ppt == NULL ){
  91.         pos.x = 0 ;
  92.         pos.y = 0 ;
  93.     } else {
  94.         pos = *ppt ;
  95.     }
  96.  
  97.     MG_PushOrigin( &pos, &p->svPos );
  98.  
  99.     if( pfr == NULL ){
  100.         EIN_getObjectFrame( objId, &fr ) ;
  101.         pwclp = WIN_getClipMemory( &fr, NULL ) ;
  102.     } else {
  103.         pwclp = WIN_getClipMemory( pfr, NULL ) ;
  104.     }
  105.     pwclp = WIN_clipWindow( objId, pwclp, FALSE ) ;
  106.  
  107.     /*    î╗ì▌é╠âNâèâbâvé╞é╠ and é≡é╞éΘ.    */
  108.     MMI_GetControl( &pctrl ) ;
  109.     pwclp = WIN_andClip( pwclp, pctrl->clip ) ;
  110.     /*    ò\Īÿgé≡É▌ÆΦé╖éΘ.    */
  111.     WIN_pushVisible( WIN_copyClip( pwclp ), &p->visible ) ;
  112.     WIN_pushClip( pwclp, &p->clip ) ;
  113.  
  114.     return NOERR ;
  115. }
  116.  
  117. /*<Func>================================================================
  118. *    int        EIN_endClipFrame( char *work )
  119. *
  120. *    üyèT  ùvüz    âNâèâbâvÿgé╠ò£î│Åêù¥üB
  121. *
  122. *    üyï@  ö\üz    EIN_clipFrame é┼æ▐ö≡é╡é╜âNâèâbâvÿgé╠ò£î│üB
  123. *
  124. *    üyôⁿ  ù═üz    é╚é╡
  125. *
  126. *    üyÅo  ù═üz    é╚é╡
  127. *
  128. *    üyè╓ÉöÆlüz    == NOERR    É│ÅφÅIù╣
  129. *
  130. *    üyÆì  ê╙üz    
  131. *
  132. *    üyÄQ  Å╞üz    
  133. *
  134. *-----------------------------------------------------------------------
  135. *    V11L10    1994.07.08/Nam    (OZZYé│é±é╠è╓ÉöéµéΦ)
  136. *</Func>==============================================================*/
  137. int        EIN_endClipFrame( EIN_CLIPWORK *p )
  138. {
  139.     /* é¿û±æ⌐é╠ErrorTrap */
  140.     if ( p == NULL ){
  141.         return ERROR;
  142.     }
  143.     /*    ò\Īÿgé≡ò£ïAé╖éΘ.    */
  144.     WIN_popClip( p->clip ) ;
  145.     WIN_popVisible( p->visible );
  146.     /* ì└òWîné╠ò£ïA */
  147.     MG_PopOrigin( &p->svPos );
  148.  
  149.     return NOERR ;
  150. }
  151.  
  152. /*<Func>================================================================
  153. *    int        EIN_getObjectFrame( int objId, FRAME *fr )
  154. *
  155. *    üyèT  ùvüz    âIâuâWâFâNâgé╠æσé½é│é≡ïüé▀éΘüB
  156. *
  157. *    üyï@  ö\üz    MM_GETHYPERé≡ùpéóé╕é╔ id é┼Īé│éΩéΘâIâuâWâFâNâgé╠æσé½é│é≡
  158. *                ò╘é╖üB
  159. *
  160. *    üyôⁿ  ù═üz
  161. *                objId    :    ö╗ÆΦé╖éΘòöòiId
  162. *                *fr        :    òöòié╠æσé½é│é≡ò╘é╖â|âCâôâ^
  163. *
  164. *    üyÅo  ù═üz
  165. *                *fr        :    òöòié╠æσé½é│é≡ò╘é╖
  166. *
  167. *    üyè╓ÉöÆlüz    == NOERR    É│ÅφÅIù╣
  168. *
  169. *    üyÆì  ê╙üz    
  170. *
  171. *    üyÄQ  Å╞üz    
  172. *
  173. *-----------------------------------------------------------------------
  174. *    V11L10    1994.07.08/Nam    (OZZYé│é±é╠è╓ÉöéµéΦ)
  175. *</Func>==============================================================*/
  176. int        EIN_getObjectFrame( int objId, FRAME *fr )
  177. {
  178.     *fr = ( ( HYPER *)( TL_getObjectPtr( objId )->data ) )->fr ;
  179.     return NOERR ;
  180. }
  181.  
  182. /*<Func>================================================================
  183. *    int        EIN_clipWake( int objId )
  184. *
  185. *    üyèT  ùvüz    âEâBâôâhâEâNâèâbâvé≡ìlù╢é╡é─é╔WAKEé╖éΘ
  186. *
  187. *    üyï@  ö\üz    âEâBâôâhâEÿgé≡æSëµû╩ë≡Å£é╡é─MM_SHOW, MM_WAKEé╡é─âNâèâbâvò£ïA
  188. *
  189. *    üyôⁿ  ù═üz
  190. *
  191. *    üyÅo  ù═üz    é╚é╡
  192. *
  193. *    üyè╓ÉöÆlüz    == NOERR    É│ÅφÅIù╣
  194. *                != NOERR    objIdê┘Åφ
  195. *
  196. *    üyÆì  ê╙üz    
  197. *
  198. *    üyÄQ  Å╞üz    
  199. *
  200. *-----------------------------------------------------------------------
  201. *    V11L10    1994.07.08/Nam    (éñé▄é¡ô«é⌐é╚éó(T-T))
  202. *</Func>==============================================================*/
  203. int        EIN_clipWake( int objId )
  204. {
  205.     WINCLIP        *pwclps;
  206.     EIN_CLIPWORK    p;        /* âNâèâbâvâfü[â^ì\æóæ╠ */
  207.  
  208.     /* é¿û±æ⌐é╠ErrorTrap */
  209.     if ( objId < 1 ){
  210.         return ERROR;
  211.     }
  212.     EIN_clipFrame( objId, NULL, NULL, &p );
  213.     WIN_beginUpDateObj( objId, &pwclps ) ;
  214.     MMI_SendMessage( objId, MM_SHOW, 0 );
  215.     MMI_SendMessage( objId, MM_WAKE, 0 );
  216.     WIN_endUpDateObj( pwclps ) ;
  217.     EIN_endClipFrame( &p );
  218.  
  219.     return NOERR ;
  220. }
  221.  
  222.